<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/sem.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/sem.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X1VBUElfTElOVVhfU0VNX0hfMA__"><span class="b">_UAPI_LINUX_SEM_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X1VBUElfTElOVVhfU0VNX0hfMA__"><span class="b">_UAPI_LINUX_SEM_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">ipc</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="k">/* semop flags */</span>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNX1VORE9fMA__"><span class="b">SEM_UNDO</span></a>        <span class="c">0x1000</span>  <span class="k">/* undo the operation on exit */</span>
<a name="8" /><span class="True">       8:</span> 
<a name="9" /><span class="True">       9:</span> <span class="k">/* semctl Command Definitions. */</span>
<a name="10" /><span class="True">      10:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0VUUElEXzA_"><span class="b">GETPID</span></a>  <span class="c">11</span>       <span class="k">/* get sempid */</span>
<a name="11" /><span class="True">      11:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0VUVkFMXzA_"><span class="b">GETVAL</span></a>  <span class="c">12</span>       <span class="k">/* get semval */</span>
<a name="12" /><span class="True">      12:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0VUQUxMXzA_"><span class="b">GETALL</span></a>  <span class="c">13</span>       <span class="k">/* get all semval&apos;s */</span>
<a name="13" /><span class="True">      13:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0VUTkNOVF8w"><span class="b">GETNCNT</span></a> <span class="c">14</span>       <span class="k">/* get semncnt */</span>
<a name="14" /><span class="True">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0VUWkNOVF8w"><span class="b">GETZCNT</span></a> <span class="c">15</span>       <span class="k">/* get semzcnt */</span>
<a name="15" /><span class="True">      15:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VUVkFMXzA_"><span class="b">SETVAL</span></a>  <span class="c">16</span>       <span class="k">/* set semval */</span>
<a name="16" /><span class="True">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VUQUxMXzA_"><span class="b">SETALL</span></a>  <span class="c">17</span>       <span class="k">/* set all semval&apos;s */</span>
<a name="17" /><span class="True">      17:</span> 
<a name="18" /><span class="True">      18:</span> <span class="k">/* ipcs ctl cmds */</span>
<a name="19" /><span class="True">      19:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNX1NUQVRfMA__"><span class="b">SEM_STAT</span></a> <span class="c">18</span>
<a name="20" /><span class="True">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNX0lORk9fMA__"><span class="b">SEM_INFO</span></a> <span class="c">19</span>
<a name="21" /><span class="True">      21:</span> 
<a name="22" /><span class="True">      22:</span> <span class="k">/* Obsolete, used only for backwards compatibility and libc5 compiles */</span>
<a name="23" /><span class="True">      23:</span> <span class="m">struct</span> <span class="b">semid_ds</span> <span class="f">{</span>
<a name="24" /><span class="True">      24:</span>     <span class="m">struct</span> <span class="b">ipc_perm</span>    <span class="b">sem_perm</span><span class="f">;</span>        <span class="k">/* permissions .. see ipc.h */</span>
<a name="25" /><span class="True">      25:</span>     <span class="b">__kernel_time_t</span>    <span class="b">sem_otime</span><span class="f">;</span>        <span class="k">/* last semop time */</span>
<a name="26" /><span class="True">      26:</span>     <span class="b">__kernel_time_t</span>    <span class="b">sem_ctime</span><span class="f">;</span>        <span class="k">/* last change time */</span>
<a name="27" /><span class="True">      27:</span>     <span class="m">struct</span> <span class="b">sem</span>    <span class="f">*</span><span class="b">sem_base</span><span class="f">;</span>        <span class="k">/* ptr to first semaphore in array */</span>
<a name="28" /><span class="True">      28:</span>     <span class="m">struct</span> <span class="b">sem_queue</span> <span class="f">*</span><span class="b">sem_pending</span><span class="f">;</span>        <span class="k">/* pending operations to be processed */</span>
<a name="29" /><span class="True">      29:</span>     <span class="m">struct</span> <span class="b">sem_queue</span> <span class="f">*</span><span class="f">*</span><span class="b">sem_pending_last</span><span class="f">;</span>    <span class="k">/* last pending operation */</span>
<a name="30" /><span class="True">      30:</span>     <span class="m">struct</span> <span class="b">sem_undo</span>    <span class="f">*</span><span class="b">undo</span><span class="f">;</span>            <span class="k">/* undo requests on this array */</span>
<a name="31" /><span class="True">      31:</span>     <span class="m">unsigned</span> <span class="m">short</span>    <span class="b">sem_nsems</span><span class="f">;</span>        <span class="k">/* no. of semaphores in array */</span>
<a name="32" /><span class="True">      32:</span> <span class="f">}</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span> 
<a name="34" /><span class="True">      34:</span> <span class="k">/* Include the definition of semid64_ds */</span>
<a name="35" /><span class="True">      35:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">sembuf</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="36" /><span class="True">      36:</span> 
<a name="37" /><span class="True">      37:</span> <span class="k">/* semop system calls takes an array of these. */</span>
<a name="38" /><span class="True">      38:</span> <span class="m">struct</span> <span class="b">sembuf</span> <span class="f">{</span>
<a name="39" /><span class="True">      39:</span>     <span class="m">unsigned</span> <span class="m">short</span>  <span class="b">sem_num</span><span class="f">;</span>    <span class="k">/* semaphore index in array */</span>
<a name="40" /><span class="True">      40:</span>     <span class="m">short</span>        <span class="b">sem_op</span><span class="f">;</span>        <span class="k">/* semaphore operation */</span>
<a name="41" /><span class="True">      41:</span>     <span class="m">short</span>        <span class="b">sem_flg</span><span class="f">;</span>    <span class="k">/* operation flags */</span>
<a name="42" /><span class="True">      42:</span> <span class="f">}</span><span class="f">;</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="k">/* arg for semctl system calls. */</span>
<a name="45" /><span class="True">      45:</span> <span class="m">union</span> <span class="b">semun</span> <span class="f">{</span>
<a name="46" /><span class="True">      46:</span>     <span class="m">int</span> <span class="b">val</span><span class="f">;</span>            <span class="k">/* value for SETVAL */</span>
<a name="47" /><span class="True">      47:</span>     <span class="m">struct</span> <span class="b">semid_ds</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">buf</span><span class="f">;</span>    <span class="k">/* buffer for IPC_STAT &amp; IPC_SET */</span>
<a name="48" /><span class="True">      48:</span>     <span class="m">unsigned</span> <span class="m">short</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">array</span><span class="f">;</span>    <span class="k">/* array for GETALL &amp; SETALL */</span>
<a name="49" /><span class="True">      49:</span>     <span class="m">struct</span> <span class="b">seminfo</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">__buf</span><span class="f">;</span>    <span class="k">/* buffer for IPC_INFO */</span>
<a name="50" /><span class="True">      50:</span>     <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">__pad</span><span class="f">;</span>
<a name="51" /><span class="True">      51:</span> <span class="f">}</span><span class="f">;</span>
<a name="52" /><span class="True">      52:</span> 
<a name="53" /><span class="True">      53:</span> <span class="m">struct</span>  <span class="b">seminfo</span> <span class="f">{</span>
<a name="54" /><span class="True">      54:</span>     <span class="m">int</span> <span class="b">semmap</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span>     <span class="m">int</span> <span class="b">semmni</span><span class="f">;</span>
<a name="56" /><span class="True">      56:</span>     <span class="m">int</span> <span class="b">semmns</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span>     <span class="m">int</span> <span class="b">semmnu</span><span class="f">;</span>
<a name="58" /><span class="True">      58:</span>     <span class="m">int</span> <span class="b">semmsl</span><span class="f">;</span>
<a name="59" /><span class="True">      59:</span>     <span class="m">int</span> <span class="b">semopm</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span>     <span class="m">int</span> <span class="b">semume</span><span class="f">;</span>
<a name="61" /><span class="True">      61:</span>     <span class="m">int</span> <span class="b">semusz</span><span class="f">;</span>
<a name="62" /><span class="True">      62:</span>     <span class="m">int</span> <span class="b">semvmx</span><span class="f">;</span>
<a name="63" /><span class="True">      63:</span>     <span class="m">int</span> <span class="b">semaem</span><span class="f">;</span>
<a name="64" /><span class="True">      64:</span> <span class="f">}</span><span class="f">;</span>
<a name="65" /><span class="True">      65:</span> 
<a name="66" /><span class="True">      66:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNTU5JXzA_"><span class="b">SEMMNI</span></a>  <span class="c">128</span>             <span class="k">/* &lt;= IPCMNI  max # of semaphore identifiers */</span>
<a name="67" /><span class="True">      67:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNTVNMXzA_"><span class="b">SEMMSL</span></a>  <span class="c">250</span>             <span class="k">/* &lt;= 8 000 max num of semaphores per id */</span>
<a name="68" /><span class="True">      68:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNTU5TXzA_"><span class="b">SEMMNS</span></a>  <span class="f">(</span><a href="cpu.c_macros_noref.html#_U0VNTU5JXzA_"><span class="b">SEMMNI</span></a><span class="f">*</span><a href="cpu.c_macros_noref.html#_U0VNTVNMXzA_"><span class="b">SEMMSL</span></a><span class="f">)</span> <span class="k">/* &lt;= INT_MAX max # of semaphores in system */</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNT1BNXzA_"><span class="b">SEMOPM</span></a>  <span class="c">32</span>            <span class="k">/* &lt;= 1 000 max num of ops per semop call */</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNVk1YXzA_"><span class="b">SEMVMX</span></a>  <span class="c">32767</span>           <span class="k">/* &lt;= 32767 semaphore maximum value */</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNQUVNXzA_"><span class="b">SEMAEM</span></a>  <a href="cpu.c_macros_noref.html#_U0VNVk1YXzA_"><span class="b">SEMVMX</span></a>          <span class="k">/* adjust on exit max value */</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span> <span class="k">/* unused */</span>
<a name="74" /><span class="True">      74:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNVU1FXzA_"><span class="b">SEMUME</span></a>  <a href="cpu.c_macros_noref.html#_U0VNT1BNXzA_"><span class="b">SEMOPM</span></a>          <span class="k">/* max num of undo entries per process */</span>
<a name="75" /><span class="True">      75:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNTU5VXzA_"><span class="b">SEMMNU</span></a>  <a href="cpu.c_macros_noref.html#_U0VNTU5TXzA_"><span class="b">SEMMNS</span></a>          <span class="k">/* num of undo structures system wide */</span>
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNTUFQXzA_"><span class="b">SEMMAP</span></a>  <a href="cpu.c_macros_noref.html#_U0VNTU5TXzA_"><span class="b">SEMMNS</span></a>          <span class="k">/* # of entries in semaphore map */</span>
<a name="77" /><span class="True">      77:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_U0VNVVNaXzA_"><span class="b">SEMUSZ</span></a>  <span class="c">20</span>        <span class="k">/* sizeof struct sem_undo */</span>
<a name="78" /><span class="True">      78:</span> 
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="True">      80:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _UAPI_LINUX_SEM_H */</span>
<a name="81" /><span class="True">      81:</span> </pre>
  </body>
</html>
